package fr.asip.cps3.exemple.modele.exceptions;


/**
 * Classe d'exception applicative intervenant au niveau des contrôleurs de l'applications
 */
public class ExceptionControleur extends ExceptionProgrammeExemple {

	private static final long serialVersionUID = 5967813579001442180L;
	
	/**
	 * Code du type de controleur
	 */
	private int typeControleur = -1;
	
	/**
	 * Constructeur
	 * @param typeControleur Code du type de contrôleur
	 */
	public ExceptionControleur(int typeControleur) {
		super();
		this.typeControleur = typeControleur;
	}

	/**
	 * Constructeur
	 * @param typeControleur Code du type de contrôleur 
	 * @param message Intitulé de l'exception
	 * @param cause Cause de l'exception
	 */
	public ExceptionControleur(int typeControleur, String message, Throwable cause) {
		super(message, cause);
		this.typeControleur = typeControleur;
	}

	/**
	 * Constructeur
	 * @param typeControleur Code du type de contrôleur 
	 * @param message Intitulé de l'exception
	 */
	public ExceptionControleur(int typeControleur, String message) {
		super(message);
		this.typeControleur = typeControleur;
	}

	/**
	 * Constructeur
	 * @param typeControleur Code du type de contrôleur 
	 * @param message Intitulé de l'exception
	 * @param cause Cause de l'exception
	 */
	public ExceptionControleur(int typeControleur, Throwable cause) {
		super(cause);
		this.typeControleur = typeControleur;
	}

	/**
	 * Accesseur
	 * @return le code de type de contrôleur
	 */
	public int getTypeControleur() {
		return typeControleur;
	}

	/**
	 * Détermine le type d'exception
	 * @return Le type d'exception
	 */
	public String getTypeException() {
		
		switch(typeControleur) {
		
			case ExceptionProgrammeExemple.TYPE_CONTROLEUR_APPLICATION:
				return ("Exception contrôleur application");

			case ExceptionProgrammeExemple.TYPE_CONTROLEUR_ECRAN:
				return ("Exception contrôleur écran");

			case ExceptionProgrammeExemple.TYPE_CONTROLEUR_MENU:
				return ("Exception contrôleur menu");
				
			default:
				return "Exception contrôleur";
		}
			
	}
	
}
